草庐IT

TypeScript算法题实战——剑指 Offer篇(1)

全部标签

javascript - 使用高效算法对数组中的相同对进行计数

问题陈述:a[]是n个数的数组,数组中相同对的计数,使得0p,q是对的索引。a[3,5,6,3,3,5]n=6这里相同对的数目是4,它们是(0,3),(0,4),(3,4),(1,5)且不(2,2)或(4,3)违反p条件。解决方案1:functiongetIdenticalPairs(a,n){varidenticalPairs=0;for(vari=0;i这段代码工作得很好,但它的时间复杂度似乎是o(n2)。我尝试的第二个解决方案是,解决方案2:使用组合公式,相同对的nos,ncrvaridenticalPairs=0;functiongetIdenticalPairs(a,n){v

javascript - 在 Typescript 中为 `this` 关键字键入注释

我有一个独立函数,旨在使用Function.prototype.call提供的上下文。例如:functionfoo(){returnthis.bar;}>foo.call({bar:"baz"})baz有没有办法在这种情况下为this关键字提供Typescript类型注释? 最佳答案 首先,你可以使用特殊的thisparameter用于识别您期望的对象类型的语法this成为:functionfoo(this:{bar:string}){returnthis.bar;//nomoreerror}如果你直接调用它会有帮助:foo();/

javascript - 我如何解决 'Property ' 宽度'在类型 'HTMLElement' 上不存在。'在 vscode 中使用//@ts-check 类型检查 Javascript(不是 Typescript)时?

在view.js文件中:constcanvas=document.getElementById('canvas');...export{canvas,};在main.js文件中:import*asviewfrom'../src/view.js';...xPosition:view.canvas.width/2,给我'属性'width'在类型'HTMLElement'上不存在。类型检查错误。我不知道如何进行,我对typescript的了解为零,而且程序是用javascript编写的。我读过的所有解决方案都需要使用typescript,这在这个例子中是没有用的。有什么办法可以消除这个错误吗

javascript - typescript : find date difference in dates/hours/minutes

我正在进行日期比较,我正在尝试以日期、小时、分钟的格式计算和显示两个日期之间的差异...日期值存储在数据库中,如下所示:EndDate:2018-11-2910:49:49.9396033PurchaseDate:2018-11-2910:49:07.4154497在我的Angular组件中,我有:letresult=newDate(res.endDate).valueOf()-newDate(res.purchaseDate).valueOf();这导致:42524我不确定它代表什么。我想知道计算两个日期之间时差的正确方法是什么,以及如何以正确且可读的方式显示结果。欢迎任何帮助

javascript - 如何将字符串数组转换为 typescript 类型?

我有这个数组:constarr=["foo","bar","loo"]我需要将它转换为typescript类型typearrTyp="foo"|"bar"|"loo";我如何在typescript中做到这一点? 最佳答案 为3.4及更高版本编辑:在3.4constassertions添加了,所以我们可以使用asconst得到一个字符串字面量类型的元组:constarr=["foo","bar","loo"]asconsttypearrTyp=typeofarr[number];//"foo"|"bar"|"loo"原创问题是arr没

javascript - 可以解读这段javascript。有人通过 facebook 发给我,要我复制到我的地址栏——我没有

DONOTUSETHIS!javascript:(function(){a='app107489592636080_KxqAxK';b='app107489592636080_bGBstB';gASjYp='app107489592636080_gASjYp';kyFYLC='app107489592636080_kyFYLC';NGqzYj='app107489592636080_NGqzYj';eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};

javascript - 最小交叉点布局算法

我想知道是否有任何图形的最小交点布局算法(不是基于力的)示例,因此我可以将其适应d3.js。 最佳答案 计算最小化边交叉的图形布局是NP-hard,因此没有单一的算法;有不同的算法具有不同的权衡。基于力的布局(Fruchterman–Reingold)是一种方法,分层(Sugiyama)是另一种方法。还有针对特定类型图形的布局,例如树(Reingold–Tilford)和小世界(vanHam–vanWijk)。诸如Dig-CoLa(Dwyer–Koren)之类的约束布局是另一类算法。如果您想要一种专门寻求最小化边缘交叉数的算法,您可

javascript - A* 算法 : closed list contains too many elements/too large

我目前正在用JavaScript实现A*算法。但是,我遇到了一个问题:我的closedList似乎太大了。这是输出的屏幕截图:什么会导致这个问题?我的启发式计算有误吗?Node.prototype.getHeuristic=function(pos0,pos1){//ManhattenDistancevarhorizontalDistance=Math.abs(pos1.x-pos0.x);varverticalDistance=Math.abs(pos1.y-pos0.y);returnhorizontalDistance+verticalDistance;}还是我在这个方法中理解/

javascript - 在远程加载的 javascript 中使用 document.write 写出内容——为什么是个坏主意?

我不是全职Javascript开发人员。我们有一个网络应用程序,其中一部分是将一个小的信息小部件写入另一个域。这实际上只是一个html表,其中写入了一些值。在过去的8年里,我不得不这样做几次,最后我总是通过一个脚本来完成它,而document.write不在表格中。例如:document.write('hereissomecontent');在theirdomain.com上.........我一直认为这有点丑陋,但效果很好,而且我们始终可以控制内容(或者受信任的代表可以控制您当前的库存等)。所以出现了另一个这样的项目,我使用document.write在大约5分钟内完成了编码。其他人

javascript - TypeScript 可以为 Closure Compiler 输出注释吗?

我正在使用TypeScript,我想使用Closure-Compiler来缩小和混淆构建TS代码后获得的JS输出。我读到GCC能够根据类型定义进行混淆。据我所知(如果我错了,请纠正我)这意味着如果我的代码上有类型注释,那么GCC将使用它们来进行更好的混淆。例如,对于obj.someProp,GCC目前在我的代码中查找someProp属性名称的所有实例,而不考虑它在哪个对象上,并替换所有实例到相同的混淆名称(例如o.a)。但是如果我在我的代码上有类型注释,GCC将能够知道哪个对象属于哪种类型并相应地对其进行混淆-因此两种不同类型的相同属性名称将被混淆为两个不同的名称。问题:我的理解正确吗